/*
Copyright [2020] [https://www.xiaonuo.vip]

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

  http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

Snowy采用APACHE LICENSE 2.0开源协议，您在使用过程中，需要注意以下几点：

1.请不要删除和修改根目录下的LICENSE文件。
2.请不要删除和修改Snowy源码头部的版权声明。
3.请保留源码和相关描述文件的项目出处，作者声明等。
4.分发源码时候，请注明软件出处 https://gitee.com/xiaonuobase/snowy
5.在修改包名，模块名称，项目代码等时，请注明软件出处 https://gitee.com/xiaonuobase/snowy
6.若您的项目无法满足以上几点，可申请商业授权，获取Snowy商业授权许可，请在官网购买授权，地址为 https://www.xiaonuo.vip
 */
package vip.xiaonuo.facedoor.modular.devicebase.param;

import com.alibaba.fastjson.annotation.JSONField;
import vip.xiaonuo.core.pojo.base.param.BaseParam;
import lombok.Data;

import javax.validation.constraints.NotNull;
import javax.validation.constraints.NotBlank;

/**
 * 终端基础属性表参数类
 *
 * @author 胡鹏达
 * @date 2022-07-08 15:24:36
 */
@Data
public class DeviceBaseParam extends BaseParam {

    private Integer mandatory;

    private Integer mandatoryLocal;

    /**
     * 主键
     */
    @NotNull(
            message = "主键不能为空，请检查id参数",
            groups = {edit.class, delete.class, detail.class})
    private Long id;

    /**
     * 创建者
     */
    private String createBy;

    /**
     * 创建时间
     */
    private String createDate;

    /**
     * 更新者
     */
    private String updateBy;

    /**
     * 更新时间
     */
    private String updateDate;

    /**
     * 备注信息
     */
    private String remarks;

    /**
     * 逻辑删除标记（0：显示；1：隐藏）
     */
    private String delFlag;

    /**
     * 终端注册码
     */
    @NotBlank(
            message = "终端注册码不能为空，请检查registrationCode参数",
            groups = {add.class, edit.class})
    private String registrationCode;

    /**
     * 别名
     */
    private String aliasName;

    /**
     * 部门
     */
    private String region;

    /**
     * 地址
     */
    private String address;

    /**
     * 坐标
     */
    private String coordinate;

    /**
     * 柜门数
     */
    private Integer doorNumbers;

    /**
     * 网络状态 0:关机 1:运行 2:断线
     */
    private String deviceState;

    /**
     * 设备名称
     */
    @NotBlank(
            message = "设备名称不能为空，请检查name参数",
            groups = {add.class, edit.class})
    private String name;

    /**
     * 柜子类型 1-主柜  2-副柜
     */
    private String type;

    /**
     * 音量   0-100
     */
    private Integer volume;

    /**
     * 语音提示 0姓名语音，1验证语音，2滴声
     */
    private String voiceCues;

    /**
     * 是否检测指静脉（0不检测，1检测）
     */
    private String isVein;

    /**
     * 是否使用雷达（0不用，1用）
     */
    private String isRadar;

    /**
     * 设备检测距离（0-10）,该值越大距离越远
     */
    private Integer detectionDistance;

    /**
     * 是否开启活体检测（不开启1，开启2）
     */
    private String isBioAssay;

    /**
     * 是否绑定 1-已绑定  2-未绑定   用于记录副柜是否绑定主柜
     */
    private String isBind;

    /**
     * 副柜绑定的主柜id
     */
    private String bindId;

    /**
     * 该设备单客户最多可使用的柜格数
     */
    private String availableNum;

    /**
     * 设备类型 人脸门禁机1 人证机2，二维码门禁3，指静脉门禁4，存储柜5（暂时不考虑）
     */
    private String deviceType;

    /**
     * 设备型号
     */
    private String deviceModel;

    /**
     * 终端登录密码
     */
    private String devicePassword;

    /**
     * 设备登陆名称
     */
    private String deviceLoginName;

    /**
     * 心跳计数器
     */
    private Integer counter;

    /**
     *
     */
    private String cpuUsage;

    /**
     *
     */
    private String ramUsage;

    /**
     * IP
     */
    private String cabinetIp;

    /**
     * 端口
     */
    private String cabinetPort;

    /**
     * 最后上线时间
     */
    private String lastOnlineTime;

    /**
     *
     */
    private String wiegandProtocol;

    /**
     *
     */
    private String wiegandDataFormat;

    /**
     * 二维码门禁mac地址
     */
    private String mac;

    /**
     * 设备软件版本号
     */
    private String appVersion;

    // 恢复出场设置
    private Integer defaltDoorSet = 0;
    private Integer defaltSoundSet = 0;
    private Integer defaltNetPar = 0;
    private Integer defaltCenterPar = 0;
    private Integer defaltCapture = 0;
    private Integer defaltLog = 0;
    private Integer defaltPerson = 0;
    private Integer defaltRecord = 0;
    private Integer defaltMaintainTime = 0;
    private Integer defaltSystemSettings = 0;
    private Integer defaltEnterIPC = 0;
    private Integer defaltServerBasicPara = 0;
    private Integer defaltWorktype = 0;

    // 基础设备参数
    private Integer deviceId;
    /**
     * faceThreshold
     */
    @JSONField(name = "FaceThreshold")
    private Integer faceThreshold;
    /**
     * iDCardThreshold
     */
    @JSONField(name = "IDCardThreshold")
    private Integer iDCardThreshold;
    /**
     * controlType
     */
    @JSONField(name = "ControlType")
    private Integer controlType;
    /**
     * autoRebootDay
     */
    @JSONField(name = "AutoRebootDay")
    private Integer autoRebootDay;
    /**
     * autoRebootHour
     */
    @JSONField(name = "AutoRebootHour")
    private Integer autoRebootHour;
    /**
     * direction
     */
    @JSONField(name = "Direction")
    private Integer direction;

    /**
     * submask
     */
    @JSONField(name = "Submask")
    private String submask;
    /**
     * gateway
     */
    @JSONField(name = "Gateway")
    private String gateway;
    /**
     * dns
     */
    @JSONField(name = "DNS")
    private Integer dns;

    private Integer inOut;

    /** 存储柜专有属性 START  **/
    private Integer rowNum;

    private Integer colNum;

    private Integer maxUseNum;

    private String adminPwd;
    /** 存储柜专有属性 END **/


    /**
     * 是否考勤机
     */
    @JSONField(name = "isAttendanceMachine")
    private Boolean isAttendanceMachine;

}
